#include<bits/stdc++.h>

using namespace std;
int n;

bool judge(int x) {
    for (int i = 2; i <= sqrt(x); i++) {
        if (x % (i * i) == 0) return false;    //判断是不是单纯质因数
    }
    for (int i = 2; i <= sqrt(x); i++) {        //判断是不是素数
        if (x % i == 0) return true;         //ps:题目里说了,要合数!
    }
    return false;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n;
    for (int i = 1; i <= n; i++) {               //枚举,从1到n
        if (judge(i)) cout << i << " ";
    }
    return 0;
}

/*
代码果然像题目一样单纯~^_^
这道题很水，从1~n枚举，然后判断一下，没啦！
废话不多说，上代码:
#include<bits/stdc++.h>
using namespace std;
int n;
bool ss(int x){
    if(x<=1) return true;
    for(int i=2;i*i<=x;i++)
        if(x%i==0) return true;
    return false;
}
bool f(int y){
    for(int i=2;i*i<=y;i++){
        int cnt=0;
        while(y%i==0){
            if(cnt==1) return false;
            cnt++;
            y/=i;
        }
    }
    return true;
}
int main(){
    scanf("%d",&n);
    for(int i=2;i<=n;i++)
        if(f(i)&&ss(i)) cout<<i<<" ";
    return 0;
}

*/